home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / PowerCache2.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  8KB  |  220 lines

  1.  
  2. /* PowerCache.c - The GUI of my 'PowerCache' program
  3.  *
  4.  * This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_CACHEABLE,
  16.     GID_INSTALL,
  17.     GID_RESCAN,
  18.     GID_INFO,
  19.     GID_CURRENTLYCACHED,
  20.     GID_REMOVE,
  21.     GID_PURGE,
  22.     GID_EDIT,
  23.     GID_STATS,
  24.     GID_ACTIVE,
  25.     GID_SHOW,
  26.     GID_ENABLE,
  27.     GID_DISABLE,
  28.     GID_POPUP,
  29.     GID_BEEP,
  30.     GID_SAVE,
  31.     GID_USE,
  32.     GID_CANCEL,
  33. };
  34.  
  35. /* Some data and tag items we'll be needing later */
  36.  
  37. extern struct MinList cacheablelabels;
  38.  
  39. static struct Node cacheablenodes[] =
  40. {
  41.     {&cacheablenodes[1], (struct Node *)&cacheablelabels.mlh_Head, 0, 0, "CD0: (icddisk.device, unit 3)"},
  42.     {&cacheablenodes[2], &cacheablenodes[0], 0, 0, "DF0: (trackdisk.device, unit 0)"},
  43.     {&cacheablenodes[3], &cacheablenodes[1], 0, 0, "DF2: (trackdisk.device, unit 2)"},
  44.     {&cacheablenodes[4], &cacheablenodes[2], 0, 0, "DH0: (icddisk.device, unit 0)"},
  45.     {&cacheablenodes[5], &cacheablenodes[3], 0, 0, "DH1: (icddisk.device, unit 0)"},
  46.     {&cacheablenodes[6], &cacheablenodes[4], 0, 0, "DH2: (icddisk.device, unit 6)"},
  47.     {&cacheablenodes[7], &cacheablenodes[5], 0, 0, "FF0: (devs:fmsdisk.device, unit 0)"},
  48.     {(struct Node *)&cacheablelabels.mlh_Tail, &cacheablenodes[6], 0, 0, "FF1: (devs:fmsdisk.device, unit 1)"},
  49. };
  50.  
  51. struct MinList cacheablelabels =
  52. {
  53.     (struct MinNode *)&cacheablenodes[0], NULL,(struct MinNode *)&cacheablenodes[7]
  54. };
  55.  
  56. static const struct TagItem cacheabletags[] =
  57. {
  58.     {GTLV_ShowSelected, NULL},
  59.     {GTLV_Labels, &cacheablelabels},
  60.     {TAG_DONE},
  61. };
  62.  
  63. extern struct MinList currentlycachedlabels;
  64.  
  65. static struct Node currentlycachednodes[] =
  66. {
  67.     {¤tlycachednodes[1], (struct Node *)¤tlycachedlabels.mlh_Head, 0, 0, "DH0: (10 x 64 x 4, R/W, MEM)"},
  68.     {¤tlycachednodes[2], ¤tlycachednodes[0], 0, 0, "DH1: (10 x 64 x 4, R/O, MEM)"},
  69.     {(struct Node *)¤tlycachedlabels.mlh_Tail, ¤tlycachednodes[1], 0, 0, "DF0: (5 x 32 x 4, R/O, MEM)"},
  70. };
  71.  
  72. struct MinList currentlycachedlabels =
  73. {
  74.     (struct MinNode *)¤tlycachednodes[0], NULL,(struct MinNode *)¤tlycachednodes[2]
  75. };
  76.  
  77. static const struct TagItem currentlycachedtags[] =
  78. {
  79.     {GTLV_ShowSelected, NULL},
  80.     {GTLV_Labels, ¤tlycachedlabels},
  81.     {TAG_DONE},
  82. };
  83.  
  84. /* Now, the GadgetSpec's we'll be needing for this GUI */
  85.  
  86. static GadgetSpec gadgetspecs[] =
  87. {
  88.     {LISTVIEW_KIND,25,7, {0,0,0,0,NULL,NULL,GID_CACHEABLE,PLACETEXT_ABOVE | NG_HIGHLABEL},cacheabletags,GS_DefaultTags},
  89.     {LISTVIEW_KIND,25,7, {0,0,0,0,NULL,NULL,GID_CURRENTLYCACHED,PLACETEXT_ABOVE | NG_HIGHLABEL},currentlycachedtags,GS_DefaultTags},
  90.     {BUTTON_KIND,   0,0, {0,0,0,0,"I_nstall...", NULL, GID_INSTALL, PLACETEXT_IN}, NULL, GS_DefaultTags},
  91.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Rescan", NULL, GID_RESCAN, PLACETEXT_IN}, NULL, GS_DefaultTags},
  92.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Info...", NULL, GID_INFO, PLACETEXT_IN}, NULL, GS_DefaultTags},
  93.     {BUTTON_KIND,   0,0, {0,0,0,0,"Re_move", NULL, GID_REMOVE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  94.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Purge", NULL, GID_PURGE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  95.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Edit...", NULL, GID_EDIT, PLACETEXT_IN}, NULL, GS_DefaultTags},
  96.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Stats...", NULL, GID_STATS, PLACETEXT_IN}, NULL, GS_DefaultTags},
  97.     {STRING_KIND,   0,0, {0,0,0,0,"Sh_ow Window",NULL,GID_SHOW,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  98.     {STRING_KIND,   0,0, {0,0,0,0,"Enab_le Caches",NULL,GID_ENABLE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  99.     {STRING_KIND,   0,0, {0,0,0,0,"_Disable Caches",NULL,GID_DISABLE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  100.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Popup _Window",NULL,GID_POPUP,PLACETEXT_RIGHT},NULL,GS_DefaultTags},
  101.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"_Beep",NULL,GID_BEEP,PLACETEXT_RIGHT},NULL,GS_DefaultTags},
  102.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Ac_tive",NULL,GID_ACTIVE,PLACETEXT_RIGHT},NULL,GS_DefaultTags},
  103.     {BUTTON_KIND,   0,0, {0,0,0,0,"S_ave", NULL, GID_SAVE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  104.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Use", NULL, GID_USE, PLACETEXT_IN}, NULL, GS_DefaultTags | GS_BoldLabel},
  105.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Cancel", NULL, GID_CANCEL, PLACETEXT_IN}, NULL, GS_DefaultTags},
  106. };
  107.  
  108. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  109.  * layout engine can locate gadgets merely by their Gadget IDs.
  110.  */
  111.  
  112. GadgetSpec *DEMO_GadgetSpecList[] =
  113. {
  114.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  115.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  116.     &gadgetspecs[7], &gadgetspecs[8], &gadgetspecs[9], &gadgetspecs[10],
  117.     &gadgetspecs[11], &gadgetspecs[12], &gadgetspecs[13], &gadgetspecs[14],
  118.     &gadgetspecs[15], &gadgetspecs[16], &gadgetspecs[17], NULL
  119. };
  120.  
  121. /* Finally, the layout tag list itself. This is where most of the work is
  122.  * done. This list completely describes how the above gadgets are arranged
  123.  * in groups in the GUI.
  124.  */
  125.  
  126. ULONG DEMO_LayoutList[] =
  127. {
  128.     GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  129.  
  130.     GUIL_HorizGroup, 1,
  131.         GUIL_Flags, GUILF_EqualShare,
  132.         GUIL_FrameType, GUILFT_Recess,
  133.         GUIL_VertGroup, 1,
  134.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  135.  
  136.             GUIL_VertGroup, 0,
  137.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  138.                 GUIL_FrameType, GUILFT_Ridge,
  139.                 GUIL_FrameHeadline, "Cacheable Devices",
  140.                 GUIL_GadgetSpecID, GID_CACHEABLE,
  141.  
  142.                 GUIL_HorizGroup,0,
  143.                     GUIL_Flags, GUILF_EqualShare | GUILF_EqualHeight,
  144.                     GUIL_GadgetSpecID, GID_INSTALL,
  145.                     GUIL_GadgetSpecID, GID_RESCAN,
  146.                     GUIL_GadgetSpecID, GID_INFO,
  147.                 TAG_DONE,
  148.             TAG_DONE,
  149.  
  150.             GUIL_VertGroup, 1,
  151.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  152.                 GUIL_FrameType, GUILFT_Ridge,
  153.                 GUIL_FrameHeadline, "Hotkeys",
  154.                 GUIL_GadgetSpecID, GID_SHOW,
  155.                 GUIL_GadgetSpecID, GID_ENABLE,
  156.                 GUIL_GadgetSpecID, GID_DISABLE,
  157.             TAG_DONE,
  158.         TAG_DONE,
  159.  
  160.         GUIL_VertGroup, 1,
  161.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  162.  
  163.             GUIL_VertGroup, 1,
  164.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  165.                 GUIL_FrameType, GUILFT_Ridge,
  166.                 GUIL_FrameHeadline, "Currently Cached",
  167.  
  168.                 GUIL_VertGroup, 0,
  169.                     GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  170.                     GUIL_GadgetSpecID, GID_CURRENTLYCACHED,
  171.  
  172.                     GUIL_HorizGroup,0,
  173.                         GUIL_Flags, GUILF_EqualShare | GUILF_EqualHeight,
  174.                         GUIL_GadgetSpecID, GID_PURGE,
  175.                         GUIL_GadgetSpecID, GID_EDIT,
  176.                         GUIL_GadgetSpecID, GID_REMOVE,
  177.                     TAG_DONE,
  178.  
  179.                     GUIL_GadgetSpecID, GID_STATS,
  180.                 TAG_DONE,
  181.                 GUIL_GadgetSpecID, GID_ACTIVE,
  182.             TAG_DONE,
  183.  
  184.             GUIL_VertGroup,1,
  185.                 GUIL_Flags, GUILF_EqualShare | GUILF_EqualWidth,
  186.                 GUIL_FrameType, GUILFT_Ridge,
  187.                 GUIL_GadgetSpecID, GID_POPUP,
  188.                 GUIL_GadgetSpecID, GID_BEEP,
  189.             TAG_DONE,
  190.         TAG_DONE,
  191.     TAG_DONE,
  192.  
  193.     GUIL_HorizGroup,1,
  194.         GUIL_Flags, GUILF_EqualSize | GUILF_EqualHeight,
  195.         GUIL_GadgetSpecID, GID_SAVE,
  196.         GUIL_GadgetSpecID, GID_USE,
  197.         GUIL_GadgetSpecID, GID_CANCEL,
  198.     TAG_DONE,
  199.  
  200.     TAG_DONE,
  201. };
  202.  
  203. /* Obligatory version tag */
  204.  
  205. static const char ver[] = "$VER: PowerCache2 1.0 " __AMIGADATE__;
  206.  
  207. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  208.  
  209. int DEMO_InitialOrientation = GUIL_VertGroup;
  210.  
  211. STRPTR DEMO_WindowTitle = "PowerCache GUI (2)";
  212. STRPTR DEMO_AppID       = "PowerCache2";
  213.  
  214. STRPTR DEMO_Version     = "1.0",
  215.        DEMO_LongDesc    = "Demo program - The GUI from PowerCache (2)",
  216.        DEMO_Author      = "Michael Berg",
  217.        DEMO_Date        = __AMIGADATE__;
  218.  
  219. BOOL   DEMO_Backfill    = TRUE;
  220.